A hosting center provides computing services to multiple customers. Each customer is allocated a subset of the service provider's infrastructure resources, such as servers, to meet its needs. Customer needs change over time, and in particular, peak demands for resources can exceed average demands by orders of magnitude. A simple static allocation of resources to satisfy peak demand leaves resources underutilized. Thus recent work has focused on dynamic resource allocation in hosting environments. One of the issues in dynamic allocation schemes is resolving competing demands for resources. Solutions include first-come-first-served, priority based schemes, economic or revenue-based models, and minimization of the likelihood of missing SLAs. In all of these examples, the resources being allocated are servers. Progress has been made on dynamic allocation of other resource types, and exploring tradeoffs between certain resource types.
The general problem for a service provider is, given sets of heterogeneous resources which may be dynamically allocated to customers, what is the best way to allocate them? Because the time it takes to allocate, provision, and configure a resource for each customer varies, it is important to generate good allocations. This problem can be reduced to an optimization problem which may be evaluated with objective functions such as the ones enumerated above.
A computing utility is a system that provisions and manages one or more computing services on a shared resource infrastructure. Such a system may be used by a service provider to provide computing services to its customers using the resources in its hosting center infrastructure. A resource allocation mechanism is a basic component of a computing utility system.